#include<iostream>
using namespace std;
class Mat {
public:
	int** M;
	int note;
	int edge;
	int getnote() {
		return note;
	}
	Mat(int num, int edgenum) {
		note = num;
		edge = edgenum;
		M = new int* [note];
		for (int i = 0; i < note; i++) {
			M[i] = new int[note];
			for (int j = 0; j < note; j++) {
				M[i][j] = 0;
			}
		}

	}
	void input() {
		for (int i = 0; i < edge; i++) {
			int fr, ta, val;
			cin >> fr >> ta >> val;
			M[fr - 1][ta - 1] = val;
			M[ta - 1][fr - 1] = val;
		}
	}
	void show() {
		for (int i = 0; i < note; i++) {
			for (int j = 0; j < note; j++) {
				cout << M[i][j] << " ";
			}
			cout << endl;
		}
	}
};
int sum = 0;
void addnote(Mat a, bool* isc) {
	int place, value;
	place = -1;
	value = 10000;
	for (int i = 0; i < a.getnote(); i++) {
		if (isc[i]) {
			for (int j = 0; j < a.getnote(); j++) {
				if (!isc[j] && a.M[i][j] && a.M[i][j] < value) {
					place = j;
					value = a.M[i][j];
				}
			}
		}
	}
	isc[place] = 1;
	sum += value;
}

bool iscovor[1000];
int main() {
	int n, m;
	cin >> n >> m;
	Mat a(n, m);
	a.input();
	Mat b(n, m);

	for (int i = 0; i < 1000; i++) {
		iscovor[i] = 0;
	}
	iscovor[0] = 1;
	for (int k = 0; k < n - 1; k++) {
		addnote(a, iscovor);
	}
	cout << sum << endl;
	return 0;
}